<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>实验3</title>
    </head>
    <body>
         <!--229971318 李明星-->
        <div>
            第1题
        </div>
        <script>
           let a1,b1,c1 = [1,2,3,];
           console.log(a1,b1,c1);//输出undefined,JS的解构赋值不允许同时声明多个变量，并直接赋值给一个数组
           let [a2,b2,c2] = [1,2,3,];
           console.log(a2,b2,c2);//输出123，数组解构赋值
           let [a3,b3,c3] = [1,,3,];
           console.log(a3,b3,c3);//输出1 undefined 3，数组解构赋值，b3的位置是逗号，表示b3被赋值为undefined
           let [a4,b4] = [1];
           console.log(a4,b4);//输出1 undefined,将数组[1]解构到a4,b4中，a4被赋值1，b4被赋值undefined
           let {y:a5,b5} = {x:1,y:2};
           console.log(a5,b5);//输出2 undefined,对象解构赋值，a5重命名从对象y属性获取值，b5获取同名属性值，而对象中无b5属性
           let {a6,b6} = 123;
           console.log(a6,b6);//报错，对象解构赋值只能用于对象，而这里对一个数字进行了解构
                //第1题的代码
        </script>

        <div>
        第2题
        </div>
        <script>
        let set = new Set();
        set.add(1);
        set.add(2);
        set.add(3);
        set.delete(2);
        
        let i = set.values();
        console.log(i.next());
        console.log(i.next());
        console.log(i.next());
        //结果{value: 1, done: false}
        //{value: 3, done: false}
        //{value: undefined, done: true}
        //第2题的代码
        </script>

        <div>
            第3题
        </div>
        <script>
         let map = new Map();
         map.set(1,"a");
         map.set(2,"b");
         map.set(3,"c");
         map.set(4,"d");
        for(let i = 1;i <= map.size;i++){
        console.log(map.get(i));
        }
        map.forEach(function(value,key){
        console.log(value);
        });
        for(let v of map.values()){
              console.log(v);
        }
        for(var prop in map){
             console.log(prop);
        }
        //最后一段代码没有输出任何结果，是因为 for...in 循环不适用于迭代 Map 对象的键值对。正确的迭代 Map 对象的方式是使用 Map 对象提供的迭代方法或 for...of 循环。
        //第3题的代码
        </script>

        <div>
            第4题
        </div>
        <script>
        let arr1 = [1,2,3];
        let arr2 = arr1;console.log(arr1 == arr2);
        let arr3 = [...arr1];console.log(arr1 == arr3);
        //结果为true false
        //arr2 被赋值为 arr1 的引用，所以 arr1 和 arr2 指向同一个数组对象。因此，当你使用 == 操作符比较 arr1 和 arr2 时，它会检查它们是否引用同一个对象，由于它们确实引用同一个对象，所以返回 true。
        //使用了扩展运算符 ... 来创建一个新的数组，它包含了 arr1 中所有元素的副本。这意味着 arr3 是一个全新的数组对象，虽然它的内容与 arr1 相同，但它们是两个不同的对象,所以返回 false。

        //第4题的代码
        </script>

        <div>
            第5题
        </div>
        <script>
        let arr4 = [1,2,3];
        arr4.forEach(function(v,k){
        console.log(v);
        })
        //let arr4 = [1, 2, 3];
        //arr4.forEach((v, k) => console.log(v));
        //第5题的代码
        </script>

        <div>
            第6题
        </div>
        <script>
        Array.of(1,2,3).filter(i => i > 1).forEach(i => console.log(i));
        //Array.of(1,2,3): 使用Array.of方法创建一个包含数字1、2和3的数组。
       //.filter(i=>i>1): 使用filter方法过滤数组中的元素。i=>i>1是一个箭头函数，表示保留那些大于1的元素。因此，经过filter方法后，数组变为[2, 3]。
       //.forEach(i=>console.log(i)): 使用forEach方法遍历过滤后的数组。i=>console.log(i)是一个箭头函数，表示对数组中的每个元素执行console.log操作。
        let fib = n=> n > 1?fib(n -1) + fib(n - 2):n;
        //定义了一个名为fib的函数，用于计算斐波那契数列中的第n个数。

                    //第6题的代码
        </script>

        
        <div>
            第7题
        </div>
        <script>
        class Animal {
        constructor(name) {
            this.name = name;
        }

        shout() {
            console.log(`${this.name} shouts!`);
        }
        }

        class Dog extends Animal {
        constructor(name, age) {
            super(name); // 调用父类的构造函数
            this.age = age;
        }

        eat() {
            console.log(`${this.name} eats food.`);
        }
        }

        // 测试代码
        const dog = new Dog('Buddy', 3);
        console.log(dog.name); // 输出：Buddy
        console.log(dog.age); // 输出：3
        dog.shout(); // 输出：Buddy shouts!
        dog.eat(); // 输出：Buddy eats food.

                    //第7题的代码
        </script>
